package com.boot.system.service;

import com.boot.common.result.Result;
import com.boot.system.entity.SysJob;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;

import java.util.List;
import java.util.Map;

public interface JobService extends IService<SysJob> {

    /**
     * 定时任务分页
     * @param queryParam 查询条件
     * @return 列表
     */
    Page<SysJob> getJobPage(Map<String, Object> queryParam);

    /**
     * 定时任务列表
     * @param queryParam 查询条件
     * @return 列表
     */
    List<SysJob> getJobList(Map<String, Object> queryParam);

    /**
     * 新增任务
     * @param dataParam 任务表单
     * @return 状态
     */
    Result<?> addJob(Map<String, Object> dataParam);

    /**
     * 修改任务
     * @param dataParam 任务表单
     * @return 状态
     */
    Result<?> updateJob(Map<String, Object> dataParam);

    /**
     * 删除任务
     * @param ids 多个以英文逗号(,)分割
     * @return 状态
     */
    boolean deleteJob(String ids);

    /**
     * 根据ID查询任务
     * @param id 任务ID
     * @return 任务
     */
    SysJob getJobById(Long id);

    /**
     * 运行任务
     * @param sysJob 任务配置
     */
    void runJob(SysJob sysJob);

    /**
     * 开始任务
     * @param id 任务ID
     */
    boolean startJob(Long id);

    /**
     * 停止任务
     * @param id 任务ID
     */
    boolean stopJob(Long id);

}
